Session তৈরি এবং পরিচালনা

SQLAlchemy Session Management - এসকিউএল অ্যালকেমি (SQLAlchemy) - Database Tutorials

286

SQLAlchemy তে Session হলো ডেটাবেসের সাথে অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে যোগাযোগের মাধ্যমে ডেটাবেস অপারেশন পরিচালনা করার মূল উপাদান। Session অবজেক্ট তৈরি করার পর, এটি ডেটাবেসের সঙ্গে অবজেক্টগুলোর ম্যানিপুলেশন, ট্রানজেকশন ম্যানেজমেন্ট এবং ফিচার রিড/আপডেট অপারেশন পরিচালনা করতে সহায়তা করে।


Session তৈরি করা

SQLAlchemy তে Session তৈরি করার জন্য, প্রথমে sessionmaker ব্যবহার করে একটি Session ক্লাস তৈরি করতে হবে। তারপর, ঐ Session ক্লাস ব্যবহার করে একটি সেশন অবজেক্ট তৈরি করা হয়, যা ডেটাবেসের সাথে সম্পর্কিত এবং ডেটাবেসে অপারেশন পরিচালনা করে।

উদাহরণ:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# ডেটাবেস ইঞ্জিন তৈরি
engine = create_engine('sqlite:///example.db', echo=True)

# Session ক্লাস তৈরি
Session = sessionmaker(bind=engine)

# Session অবজেক্ট তৈরি
session = Session()

# এখন session অবজেক্টের মাধ্যমে ডেটাবেস অপারেশন করা যাবে

এখানে, sessionmaker(bind=engine) দ্বারা Session ক্লাস তৈরি করা হয়েছে এবং এটি ডেটাবেস ইঞ্জিনের সাথে সংযুক্ত। এরপর session = Session() দিয়ে একটি সেশন অবজেক্ট তৈরি করা হয়েছে, যা ডেটাবেস অপারেশন পরিচালনা করতে ব্যবহৃত হবে।


Session পরিচালনা

Session অবজেক্টটি ডেটাবেসে CRUD (Create, Read, Update, Delete) অপারেশন পরিচালনা করতে ব্যবহৃত হয়। সেশন ব্যবহার করার সময় বিভিন্ন মেথড ব্যবহার করে ডেটাবেসে পরিবর্তন বা ট্রানজেকশন করা হয়।


Session মেথডসমূহ

  1. add()
    নতুন অবজেক্ট সেশন দ্বারা ট্র্যাক করা শুরু করতে ব্যবহৃত হয়। এটি একটি অবজেক্টের পরিবর্তন ট্র্যাক করতে সাহায্য করে।

    new_user = User(name="Alice", age=25)
    session.add(new_user)
    
  2. commit()
    সমস্ত পরিবর্তন ডেটাবেসে সেভ করতে ব্যবহৃত হয়। commit() কল করার পর ডেটাবেসে সম্পন্ন হওয়া অপারেশনগুলো পাঁজিতে (save) চলে যায়।

    session.commit()
    
  3. rollback()
    ট্রানজেকশন যদি কোনো কারণে ব্যর্থ হয়, তবে এটি সমস্ত পরিবর্তন পূর্বাবস্থায় ফিরিয়ে আনে।

    session.rollback()
    
  4. close()
    সেশন বন্ধ করার জন্য ব্যবহৃত হয়। সেশন বন্ধ করলে আর কোনো অপারেশন করা যাবে না।

    session.close()
    
  5. query()
    ডেটাবেস থেকে ডেটা ফেচ (SELECT) করতে ব্যবহৃত হয়।

    users = session.query(User).all()
    for user in users:
        print(user.name, user.age)
    

Session এর মাধ্যমে ডেটাবেসে CRUD অপারেশন

Create (নতুন রেকর্ড ইনসার্ট)

# নতুন ইউজার তৈরি
new_user = User(name="John", age=28)
session.add(new_user)
session.commit()  # ডেটাবেসে সেভ

Read (ডেটা রিড)

# সব ইউজার রিড করা
users = session.query(User).all()
for user in users:
    print(user.name, user.age)

Update (ডেটা আপডেট)

# একটি ইউজারের বয়স আপডেট করা
user = session.query(User).filter_by(name="Alice").first()
user.age = 26
session.commit()  # পরিবর্তন সেভ

Delete (ডেটা মুছে ফেলা)

# একটি ইউজার মুছে ফেলা
user_to_delete = session.query(User).filter_by(name="John").first()
session.delete(user_to_delete)
session.commit()  # পরিবর্তন সেভ

Transaction Management with Session

SQLAlchemy তে Transaction ম্যানেজমেন্টের জন্য Session খুব গুরুত্বপূর্ণ। commit(), rollback() এবং begin() মেথডগুলি ডেটাবেসে ট্রানজেকশন পরিচালনা করতে ব্যবহৃত হয়।

  • begin(): একটি নতুন ট্রানজেকশন শুরু করতে ব্যবহৃত হয়।
  • commit(): ট্রানজেকশন শেষ করে এবং ডেটাবেসে সমস্ত পরিবর্তন সংরক্ষণ করে।
  • rollback(): ট্রানজেকশন বাতিল করে এবং পূর্বের অবস্থায় ফিরে আসে।

উদাহরণ:

# ট্রানজেকশন শুরু
session.begin()

try:
    # ডেটা আপডেট
    user = session.query(User).filter_by(name="Alice").first()
    user.age = 30

    # ট্রানজেকশন কমিট
    session.commit()
except:
    # ত্রুটি হলে রোলব্যাক
    session.rollback()

Session Management Tips

  • Session lifespan: সেশন অবজেক্টটি যখন আর প্রয়োজন না থাকে, তখন সেটি session.close() দিয়ে বন্ধ করে ফেলুন, যা সংযোগের মুক্তি দেয় এবং পারফরম্যান্স উন্নত করে।
  • One Session Per Unit of Work: একাধিক ডেটাবেস অপারেশনের জন্য একটিমাত্র সেশন ব্যবহার করা উচিত এবং একবার কাজ শেষ হলে সেশন বন্ধ করতে হবে।
  • Context Manager: Python এ with কনটেক্সট ম্যানেজার ব্যবহার করে সেশন সহজে পরিচালনা করা যায়, যাতে সেশনটি সঠিকভাবে বন্ধ করা হয়।

Context Manager এর মাধ্যমে Session:

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)

# Context Manager ব্যবহার করা
with Session() as session:
    new_user = User(name="Charlie", age=32)
    session.add(new_user)
    session.commit()

সারাংশ

SQLAlchemy তে Session একটি অত্যন্ত গুরুত্বপূর্ণ উপাদান, যা ডেটাবেসে CRUD অপারেশন পরিচালনা এবং ট্রানজেকশন ম্যানেজমেন্ট করার জন্য ব্যবহৃত হয়। sessionmaker এর মাধ্যমে সেশন তৈরি করা হয় এবং বিভিন্ন মেথডের সাহায্যে ডেটাবেসের সাথে কার্যক্রম সম্পন্ন করা হয়। Session অবজেক্টটি ট্রানজেকশন ম্যানেজমেন্ট, ডেটাবেস অপারেশন এবং অবজেক্ট ট্র্যাকিংয়ের জন্য অত্যন্ত কার্যকর।

Content added By
Promotion

Are you sure to start over?

Loading...